<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var foo = 1;
    (function foo() {
        //? 赋值不生效
        foo = 10
        console.log(foo)
    }()) //? -> ƒ foo() { foo = 10 ; console.log(foo) }
     //? 因为当 JS 解释器在遇到非匿名的立即执行函数时，会创建一个辅助的特定对象，然后将函数名称作为这个对象的属性，
    //? 因此函数内部才可以访问到 foo，但是这个值又是只读的，所以对它的赋值并不生效，所以打印的结果还是这个函数，并且外部的值也没有发生更改。
</script>
</body>
</html>
